Completed
Push — master ( a87f83...46c1b5 )
by
unknown
01:39
created

ql.executeWhereClause() =ꞌ)   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 33

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
nc 1
dl 0
loc 33
rs 8.8571
nop 0
1
var chai = require('chai');
2
var path = require('path');
3
4
var config = require('../src/cli').config
5
config.set({root: path.join(__dirname,'fixtures')})
6
7
var cmsData = require('../src/cli').cmsData
8
var Manager = require('../src/cli').Manager;
9
var fse = require('fs-extra');
10
11
describe('Request', function() {
12
  before( function(done) {
13
    Manager.instance.init()
14
      .then(function () {
15
        Manager.instance._whereKeys = ['title', 'priority', 'abe_meta', 'articles']
16
        Manager.instance.updateList()
17
18
        this.fixture = {
19
          tag: fse.readFileSync(__dirname + '/fixtures/templates/article.html', 'utf8'),
0 ignored issues
show
Compatibility introduced by
Consider using the path module for constructing paths since they are otherwise not cross-OS compatible.
Loading history...
20
          jsonArticle: fse.readJsonSync(__dirname + '/fixtures/data/article-1.json'),
0 ignored issues
show
Compatibility introduced by
Consider using the path module for constructing paths since they are otherwise not cross-OS compatible.
Loading history...
21
          jsonHomepage: fse.readJsonSync(__dirname + '/fixtures/data/homepage-1.json')
0 ignored issues
show
Compatibility introduced by
Consider using the path module for constructing paths since they are otherwise not cross-OS compatible.
Loading history...
22
        }
23
        done()
24
        
25
      }.bind(this))
26
  });
27
28
  /**
29
   * cmsData.sql.executeQuery
30
   * 
31
   */
32
  it('cmsData.sql.executeQuery()', function(done) {
33
    try {
34
      var match = 'select * from ../'
35
      var jsonPage = {}
0 ignored issues
show
Unused Code introduced by
The variable jsonPage seems to be never used. Consider removing it.
Loading history...
36
      var res = cmsData.sql.handleSqlRequest(match, {})
37
38
      chai.assert.equal(res.string, 'select ["*"] from ["___abe_dot______abe_dot______abe___"] ', 'select not well formatted')
39
      done();
40
    } catch (x) {
41
      done(x);
42
    }
43
  });
44
45
  /**
46
   * cmsData.sql.executeFromClause
47
   * 
48
   */
49
  it('cmsData.sql.executeFromClause()', function() {
50
    var res = cmsData.sql.executeFromClause(cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()), ['/'], ['/'])
51
    chai.expect(res).to.have.length(2);
52
  });
53
54
  it('cmsData.sql.executeWhereClause() =', function() {
55
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`article`', {})
56
    var res = cmsData.sql.executeWhereClause(
57
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
58
      request.where,
59
      request.limit,
60
      request.columns, {}
61
    )
62
    chai.expect(res, '`abe_meta.template`=`article`').to.have.length(1);
63
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
64
65
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`{{abe_meta.template}}`', this.fixture.jsonHomepage)
66
    res = cmsData.sql.executeWhereClause(
67
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
68
      request.where,
69
      request.limit,
70
      request.columns,
71
      this.fixture.jsonHomepage
72
    )
73
    chai.expect(res, '`abe_meta.template`=`{{abe_meta.template}}`').to.have.length(1);
74
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
75
76
    request = cmsData.sql.handleSqlRequest('select title from ./ where `{{abe_meta.template}}`=`{{abe_meta.template}}`', this.fixture.jsonHomepage)
77
    res = cmsData.sql.executeWhereClause(
78
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
79
      request.where,
80
      request.limit,
81
      request.columns,
82
      this.fixture.jsonHomepage
83
    )
84
    chai.expect(res, '`{{abe_meta.template}}`=`{{abe_meta.template}}`').to.have.length(1);
85
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
86
  });
87
  it('cmsData.sql.executeWhereClause() !=', function() {
88
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`!=`homepage`', {})
89
    var res = cmsData.sql.executeWhereClause(
90
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
91
      request.where,
92
      request.limit,
93
      request.columns, {}
94
    )
95
    chai.expect(res, '`abe_meta.template`!=`homepage`').to.have.length(1);
96
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
97
  });
98
  it('cmsData.sql.executeWhereClause() >', function() {
99
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`>`1`', {})
100
    var res = cmsData.sql.executeWhereClause(
101
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
102
      request.where,
103
      request.limit,
104
      request.columns,
105
      {}
106
    )
107
    chai.expect(res, '`priority`>`1`').to.have.length(1);
108
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
109
  });
110
  it('cmsData.sql.executeWhereClause() >=', function() {
111
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`>=`1`', {})
112
    var res = cmsData.sql.executeWhereClause(
113
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
114
      request.where,
115
      request.limit,
116
      request.columns,
117
      {}
118
    )
119
    chai.expect(res, '`priority`>=`1`').to.have.length(2);
120
  });
121
  it('cmsData.sql.executeWhereClause() <', function() {
122
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`<`1`', {})
123
    var res = cmsData.sql.executeWhereClause(
124
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
125
      request.where,
126
      request.limit,
127
      request.columns,
128
      {}
129
    )
130
    chai.expect(res, '`priority`<`1`').to.have.length(0);
131
  });
132
  it('cmsData.sql.executeWhereClause() <=', function() {
133
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`<=`1`', {})
134
    var res = cmsData.sql.executeWhereClause(
135
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
136
      request.where,
137
      request.limit,
138
      request.columns,
139
      {}
140
    )
141
    chai.expect(res, ' `priority`<=`1`').to.have.length(1);
142
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
143
  });
144
  it('cmsData.sql.executeWhereClause() LIKE', function() {
145
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` LIKE `home`', {})
146
    var res = cmsData.sql.executeWhereClause(
147
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
148
      request.where,
149
      request.limit,
150
      request.columns,
151
      {}
152
    )
153
    chai.expect(res, '`abe_meta.template` LIKE `home`').to.have.length(1);
154
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
155
  });
156
  it('cmsData.sql.executeWhereClause() NOT LIKE', function() {
157
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT LIKE `home`', {})
158
    var res = cmsData.sql.executeWhereClause(
159
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
160
      request.where,
161
      request.limit,
162
      request.columns,
163
      {}
164
    )
165
    chai.expect(res, '`abe_meta.template` NOT LIKE `home`').to.have.length(1);
166
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
167
  });
168
  it('cmsData.sql.executeWhereClause() AND', function() {
169
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`homepage` AND title=`homepage`', {})
170
    var res = cmsData.sql.executeWhereClause(
171
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
172
      request.where,
173
      request.limit,
174
      request.columns,
175
      {}
176
    )
177
    chai.expect(res, '`abe_meta.template`=`homepage` AND title=`homepage`').to.have.length(1);
178
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
179
  });
180
  it('cmsData.sql.executeWhereClause() OR', function() {
181
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`homepage` OR `abe_meta.template`=`article`', {})
182
    var res = cmsData.sql.executeWhereClause(
183
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
184
      request.where,
185
      request.limit,
186
      request.columns,
187
      {}
188
    )
189
    chai.expect(res, '`abe_meta.template`=`homepage` OR `abe_meta.template`=`article`').to.have.length(2);
190
  });
191
  it('cmsData.sql.executeWhereClause() IN', function() {
192
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` IN (`homepage`,`test`)', {})
193
    var res = cmsData.sql.executeWhereClause(
194
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
195
      request.where,
196
      request.limit,
197
      request.columns,
198
      {}
199
    )
200
    chai.expect(res, '`abe_meta.template` IN (`homepage`,`test`)').to.have.length(1);
201
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
202
203
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` IN (`{{articles}}`)', this.fixture.jsonHomepage)
204
    res = cmsData.sql.executeWhereClause(
205
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
206
      request.where,
207
      request.limit,
208
      request.columns,
209
      this.fixture.jsonHomepage
210
    )
211
    chai.expect(res, '`abe_meta.template` IN (`{{articles}}`').to.have.length(1);
212
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
213
  });
214
  it('cmsData.sql.executeWhereClause() NOT IN', function() {
215
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT IN (`homepage`,`test`)', {})
216
    var res = cmsData.sql.executeWhereClause(
217
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
218
      request.where,
219
      request.limit,
220
      request.columns,
221
      {}
222
    )
223
    chai.expect(res, '`abe_meta.template` NOT IN (`homepage`,`test`)').to.have.length(1);
224
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
225
226
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT IN (`{{articles}}`)', this.fixture.jsonHomepage)
227
    res = cmsData.sql.executeWhereClause(
228
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
229
      request.where,
230
      request.limit,
231
      request.columns,
232
      this.fixture.jsonHomepage
233
    )
234
    chai.expect(res, '`abe_meta.template` NOT IN (`{{articles}}`)').to.have.length(1);
235
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
236
  });
237
238
  /**
239
   * cmsData.sql.whereLike
240
   * 
241
   */
242
  it('cmsData.sql.getSourceType()', function() {
243
    chai.expect(cmsData.sql.getSourceType('http://google.com')).to.equal('url');
244
    chai.expect(cmsData.sql.getSourceType('select * from test')).to.equal('request');
245
    chai.expect(cmsData.sql.getSourceType('{"test":"test"}')).to.equal('value');
246
    chai.expect(cmsData.sql.getSourceType('references.json')).to.equal('file');
247
    chai.expect(cmsData.sql.getSourceType('test')).to.equal('other');
248
  });
249
250
  /**
251
   * cmsData.source.requestList
252
   * 
253
   */
254
  it('cmsData.source.requestList()', function(done) {
255
    var matches = cmsData.regex.getTagAbeTypeRequest(this.fixture.tag)
256
257
    chai.expect(matches[0][0]).to.not.be.null
0 ignored issues
show
introduced by
The result of the property access to chai.expect(matches.0.0).to.not.be.null is not used.
Loading history...
258
259
    var attributes = cmsData.attributes.getAll(matches[0][0], {})
260
    chai.expect(matches[0][0]).to.not.be.null
0 ignored issues
show
introduced by
The result of the property access to chai.expect(matches.0.0).to.not.be.null is not used.
Loading history...
261
262
    var jsonPage = {}
263
    cmsData.source.requestList(attributes, '', matches[0][0], jsonPage)
264
      .then(function () {
265
        chai.expect(jsonPage.abe_source).to.not.be.undefined
0 ignored issues
show
introduced by
The result of the property access to chai.expect(jsonPage.abe...ce).to.not.be.undefined is not used.
Loading history...
266
        done()
267
      })
268
  });
269
});
270